Voici un exemple de code en JavaScript :


    function selectionSort(arr) {
    for (let i = 0; i < arr.length - 1; i++) {
    let minIndex = i;
    for (let j = i + 1; j < arr.length; j++) {
    if (arr[j] < arr[minIndex]) {
        minIndex = j;
    }
    }
    if (minIndex !== i) {
    let temp = arr[i];
    arr[i] = arr[minIndex];
    arr[minIndex] = temp;
    }
    }
    return arr;
    }

    let array = [5, 3, 8, 1, 2];
    console.log(selectionSort(array)); // Output: [1, 2, 3, 5, 8]
    

Le tri par sélection (ou tri par extraction) est un algorithme de tri par comparaison. Cet algorithme est simple, mais considéré comme inefficace car il s'exécute en temps quadratique en fonction du nombre d'éléments à trier, et non en temps pseudo linéaire. Le tri par sélection est un tri en place (les éléments sont triés directement dans la structure). Implémenté comme indiqué ci-dessus, ce n'est pas un tri stable (l'ordre d'apparition des éléments égaux n'est pas préservé). Toutefois, si l'on travaille sur une structure de données adaptée (typiquement une liste), il est facile de le rendre stable : à chaque itération, il convient de chercher la première occurrence de l'élément le plus petit de la partie non triée de la liste, et de l'insérer avant le premier élément de la partie non triée de la liste, plutôt que de l'échanger avec celui-ci. Implémentée sur un tableau, cette modification implique de décaler toute une partie du tableau à chaque itération, et n'est donc pas intéressante. Cela dit, il est possible d'optimiser le processus aux travers de la création d'une nouvelle liste. Evitant ainsi de décaler le tableau à chaque itération.

Vidéo sur le tri par sélection